home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 9 / The PC-SIG Library on CD ROM - Ninth Edition.iso / 001_100 / DISK0011 / DISK0011.ZIP / HEAPSORT.BAS < prev    next >
BASIC Source File  |  1982-04-07  |  2KB  |  80 lines

  1. 100 CLEAR 5000
  2. 110 CLS               ' Sort Program     Heap Sort
  3. 120 DIM N(150),C$(150)
  4. 130 PRINT"type  C  for character string sort"
  5. 140 PRINT"Type  N  for numer sort"
  6. 150 INPUT W$
  7. 160 N=0:PRINT:PRINT
  8. 170 IF W$="n" THEN 480                  ' Goto to Number sort
  9. 180 IF W$<>"c" THEN 130
  10. 190 REM====================  Begin Character Sort
  11. 200 GOSUB 720 : INPUT S$
  12. 210 N=N+1
  13. 220 INPUT C$(N)
  14. 230 IF C$(N)<>S$ THEN 210
  15. 240 N=N-1:PRINT
  16. 250 L=INT(N/2)+1
  17. 260 N1=N
  18. 270 IF L=1 THEN 310
  19. 280 L=L-1
  20. 290 A$=C$(L)
  21. 300 GOTO 350
  22. 310 A$=C$(N1)
  23. 320 C$(N1)=C$(1)
  24. 330 N1=N1-1
  25. 340 IF N1=1 THEN 440
  26. 350 J=L
  27. 360 I=J
  28. 370 J=2*J
  29. 380 IF J=N1 THEN 400
  30. 390 IF J>N1 THEN 420
  31. 392 IF C$(J)=>C$(J+1) THEN 400
  32. 396 J=J+1
  33. 400 IF A$=>C$(J) THEN 420
  34. 410 C$(I)=C$(J)
  35. 415 GOTO 360
  36. 420 C$(I)=A$
  37. 425 GOTO 270
  38. 440 C$(1)=A$
  39. 450 FOR I=1 TO N
  40. 453    PRINT C$(I)
  41. 456 NEXT I
  42. 460 GOTO 130
  43. 470 REM ================  Start of numeric sort
  44. 480 GOSUB 720
  45. 483 INPUT S
  46. 486 PRINT
  47. 490 N=N+1
  48. 493 INPUT N(N)
  49. 496 IF N(N)<>S THEN 490
  50. 500 N=N-1
  51. 505 PRINT
  52. 520 L=INT(N/2)+1
  53. 525 N1=N
  54. 530 IF L=1 THEN 550
  55. 540 L=L-1
  56. 543 A=N(L)
  57. 546 GOTO 590
  58. 550 A=N(N1)
  59. 555 N(N1)=N(1)
  60. 560 N1=N1-1
  61. 570 IF N1=1 THEN 680
  62. 590 J= L
  63. 600 I=J
  64. 605 J=2*J
  65. 610 IF J=N1 THEN 640
  66. 620 IF J>N1 THEN 660
  67. 630 IF N(J)<N(J+1) THEN J=J+1
  68. 640 IF A>N(J) THEN 660
  69. 650 N(I) = N(J)
  70. 655 GOTO 600
  71. 660 N(I)=A
  72. 665 GOTO 530
  73. 680 N(1)=A
  74. 690 FOR I=1 TO N
  75. 693   PRINT N(I)
  76. 696 NEXT I
  77. 700 GOTO 130
  78. 720 PRINT"Enter a stop code to indicate the end of list"
  79. 740 RETURN
  80. OR I=1 TO